package basis

import "fmt"

const Pi = 3.1415926
const i = 10000
const MaxThread = 10
const prefix = "astaxie_"

const (
	x = iota // x == 0
	y = iota // y == 1
	z = iota // z == 2
	w        // 常量声明省略值时，默认和之前一个值的字面相同。这里隐式地说w = iota，因此w == 3。其实上面y和z可同样不用"= iota"
)

const (
	a       = iota //a=0
	b       = "B"
	c       = iota             //c=2
	d, e, f = iota, iota, iota //d=3,e=3,f=3
	g       = iota             //g = 4
)

//示例代码
var isActive bool  // 全局变量声明
var enabled, disabled = true, false  // 忽略类型的声明

func Test() bool {
	var available bool  // 一般声明
	valid := false      // 简短声明
	available = true    // 赋值操作
	fmt.Printf("%v %v\n",valid,testFunc())
	var p complex64 = 5+5i
	//output: (5+5i)
	fmt.Printf("Value is: %v\n", p)

	s := "hello"
	s = "c" + s[1:] // 字符串虽不能更改，但可进行切片操作
	fmt.Printf("%s\n", s)

	fmt.Println(a, b, c, d, e, f, g)

	testArr()
	return available
}

func testFunc() float32 {
	return Pi
}

func testArr()  {
	var arr [10]int  // 声明了一个int类型的数组
	arr[0] = 42      // 数组下标是从0开始的
	arr[1] = 13      // 赋值操作
	fmt.Printf("The first element is %d\n", arr[0])  // 获取数据，返回42
	fmt.Printf("The last element is %d\n", arr[9]) //返回未赋值的最后一个元素，默认返回0
}
